<?php

class WucHistorialAprobaciones extends TTemplateControl {
//<editor-fold defaultstate="collapsed" desc="Variables de Configuracion">
  //variables privadas
  const NOMBRE_WEB_USER_CONTROL = "wucHistorialAprobaciones";
  const NOMBRE_ARCHIVO_JS = "wucHistorialAprobaciones.js";
  //Modo Expandir
  const MODO_CONTRAIDO = "Contraido";
  const MODO_EXPANDIDO = "Expandido";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getModoExpandirContraer() { return $this->getViewState("ModoExpandirContraer"); }
  public function setModoExpandirContraer($value) { $this->setViewState("ModoExpandirContraer", $value); }

  public function getTituloBloque() { return $this->getViewState("TituloBloque"); }
  public function setTituloBloque($value) { $this->setViewState("TituloBloque", $value); }

  public function getMostrarExpandirContraer() { return $this->getViewState("MostrarExpandirContraer"); }
  public function setMostrarExpandirContraer($value) { $this->setViewState("MostrarExpandirContraer", $value); }

  public function getPaddingTop() { return $this->getViewState("PaddingTop"); }
  public function setPaddingTop($value) { $this->setViewState("PaddingTop", $value); }

  public function getPaddingBottom() { return $this->getViewState("PaddingBottom"); }
  public function setPaddingBottom($value) { $this->setViewState("PaddingBottom", $value); }

  public function getPaddingLeft() { return $this->getViewState("PaddingLeft"); }
  public function setPaddingLeft($value) { $this->setViewState("PaddingLeft", $value); }

  public function getPaddingRight() { return $this->getViewState("PaddingRight"); }
  public function setPaddingRight($value) { $this->setViewState("PaddingRight", $value); }

  public function getWidth() { return $this->getViewState("Width"); }
  public function setWidth($value) { $this->setViewState("Width", $value); }

  public function getVisibleLinkHistorial() { return $this->getViewState("VisibleLinkHistorial"); }
  public function setVisibleLinkHistorial($value) { $this->setViewState("VisibleLinkHistorial", $value); }

  public function getTipoMarco() { return $this->getViewState("TipoMarco"); }
  public function setTipoMarco($value) { $this->setViewState("TipoMarco", $value); }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * registra los javascript asociados
   * @author VSR, 24/04/2011
   */
  protected function registrarJavaScript() {
    $clientId = $this->pnlBloque->ClientID;
    $id = $this->pnlBloque->ID;
    $prefijoControl = str_replace($id, "", $clientId);
    $dataScript = "";
    $dataScriptExpandirContraer = "";
    $sb = new StringBuilder();
    $themeBaseUrl = $this->Page->Theme->BaseUrl;

    //escribe bloque js para registrar el prefijo del control
    if ($this->Visible) {
      //registra script para inicializar la expansion o contraccion del bloque al cargar la pagina
      $this->wucMarcoTop->MostrarExpandirContraer = $this->MostrarExpandirContraer;
      $this->wucMarcoTop->ModoExpandirContraer = $this->ModoExpandirContraer;
      $this->wucMarcoTop->NombreContenedorContraer = $this->holderFormulario->ClientID;
      $this->wucMarcoTop->Tipo = $this->TipoMarco;
      $this->wucMarcoBottom->Tipo = $this->TipoMarco;
    }
  }

  /**
   * inicializa valores de los controles
   * @author VSR, 24/04/2011
   */
  protected function inicializaControles() {
    $paddingBloque = "";
    $width = (Utilidades::isNullOrEmpty($this->Width)) ? "200" : str_replace("px", "", $this->Width);
    $visibleLinkHistorial = (Utilidades::isNullOrEmpty($this->VisibleLinkHistorial)) ? "true" : $this->VisibleLinkHistorial;
    $style = "";

    //coloca el padding al control
    if(!Utilidades::isNullOrEmpty($this->PaddingTop)) { $paddingBloque .= "padding-top:".$this->PaddingTop; }
    if(!Utilidades::isNullOrEmpty($this->PaddingBottom)) { $paddingBloque .= "padding-bottom:".$this->PaddingBottom; }
    if(!Utilidades::isNullOrEmpty($this->PaddingLeft)) { $paddingBloque .= "padding-left:".$this->PaddingLeft; }
    if(!Utilidades::isNullOrEmpty($this->PaddingRight)) { $paddingBloque .= "padding-right:".$this->PaddingRight; }

    $style .= "width:".$width."px;";
    $style .= (!Utilidades::isNullOrEmpty($paddingBloque)) ? $paddingBloque : "";
    $this->pnlBloque->Style = $style;
    $this->wucMarcoTop->Titulo = $this->TituloBloque;
    $this->pnlLinkVerHistorial->Visible = ($visibleLinkHistorial == "true") ? true : false;
  }

  /**
   * obtiene el historial de aprobaciones del flujo
   * @param <type> $idFlujo
   */
  private function obtenerDatos($idFlujo) {
    try {
      $arr = WfFlujo::obtenerHistorialAprobaciones($idFlujo, UsuarioWf::NOMBRE_ENTIDAD_FIRMA);
    } catch (Exception $e) {
      $arr = null;
    }
    Utilidades::grabarSessionPorNombre(self::NOMBRE_WEB_USER_CONTROL, $arr);
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * dibuja tabla HTML con los datos encontrados
   * @param <type> $idRegistro
   * @param <type> $entidad
   * @param <type> $grabarDatosEnSesion
   * @author VSR, 25/04/2011
   */
  public function cargarDatos($idFlujo) {

    try {
      $this->obtenerDatos($idFlujo);
      $arr = Utilidades::obtenerSessionPorNombre(self::NOMBRE_WEB_USER_CONTROL);

      if (is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      //si no hay registros entonces no dibuja nada
      if ($totalRegistros == 0) {
        $this->Visible = false;
      } else {
        //carga el datalist
        $this->dlHistorial->Visible = true;
        $this->dlHistorial->DataSource = $arr;
        $this->dlHistorial->dataBind();

        //escribe link para ver el historial del flujo
        $this->lblLinkVerHistorial->Text = "<img src=\"".$this->Page->Theme->BaseUrl."/img/18/zoom.png\" alt=\"\" title=\"\" style=\"vertical-align:middle;\" />&nbsp;<a href=\"javascript:;\" onclick=\"verHistorialFlujo('".$idFlujo."')\" class=\"cssTextoNormal\">Ver historial del flujo</a>";
      }
    } catch (Exception $e) {
      $this->Visible = false;
    }
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //registra los bloques javascript respectivos
    $this->registrarJavaScript();
    $this->inicializaControles();
  }

  public function onDataBoundDataList($sender, $param){
    $item = $param->Item;
    if($item->ItemType==='Item' || $item->ItemType==='AlternatingItem')
    {
      $lblFirma = $item->findControl("lblFirma");
      $txtIdAprobador = $item->findControl("txtIdAprobador");
      $txtIdArchivo = $item->findControl("txtIdArchivo");
      $txtNombreArchivo = $item->findControl("txtNombreArchivo");
      $txtIdPasoEstado = $item->findControl("txtIdPasoEstado");
      $pnlEstadoPaso = $item->findControl("pnlEstadoPaso");
      $idPasoEstado = $txtIdPasoEstado->Value;

      $pnlEstadoPaso->Visible = ($idPasoEstado != WfPasoEstado::ESTADO_APROBADO) ? true : false;
      $lblFirma->Visible = ($idPasoEstado == WfPasoEstado::ESTADO_APROBADO) ? true : false;

      //construye ruta del archivo en el repositorio
      $idArchivo = $txtIdArchivo->Value;
      if($idArchivo != "0") {
        $entidad = UsuarioWf::NOMBRE_ENTIDAD_FIRMA;
        $idAprobador = $txtIdAprobador->Value;
        $nombreArchivo = $txtNombreArchivo->Value;
        $rutaImagen = Archivo::RUTA_REPOSITORIO."/$entidad/reg$idAprobador/$idArchivo/$nombreArchivo";
        $lblFirma->Text = "<img src=\"$rutaImagen\" alt=\"\" />";
      }

      $txtIdAprobador->Value = "";
      $txtIdArchivo->Value = "";
      $txtNombreArchivo->Value = "";
      $txtIdPasoEstado->Value = "";
    }
  }
//</editor-fold>

}
?>
